
function verificarAceptacion(){
    if(!validador.isPorcentajeAceptacionValido(cantFallos,ciguenialesPrueba.length)){
        finalizarSimulacion();        
        resetValores();
        actualizarProgreso(1);//no esta funcionando
        actualizarPorcentajeExito();
		Ext.extra.msg('Lote no aceptado', 'Enviando informaci\u00F3n a Rectificaci\u00F3n');
    }
}


var indexCiguenial = 0;
var indexCampo = -1;
var campos = ['diametro1','diametro2','diametro3','conicidad1','conicidad2','conicidad3', 'ancho1', 'ancho2', 'ancho3', 'excentricidad1', 'excentricidad2', 'excentricidad3','estado'];
var cantPruebas = 12;
var cantFallos = 0;
var cantFallosNorma = 0;

var ciguenialesPrueba = [];

function iniciarSimulacion(){
    simulacion = setInterval(simular, 500);
}

function finalizarSimulacion(){
    clearInterval(simulacion);
    botonPausar.setDisabled(true);
    botonDetener.setDisabled(true);
    botonComenzar.setDisabled(false);
}

function resetValores(){
    cantFallos = 0;
    cantFallosNorma = 0;
    indexCiguenial = 0;
    indexCampo = -1;
    ciguenialesPrueba = [];
}
function simular(){
   
    var ciguenialActual = ciguenialesPrueba[indexCiguenial];
    if(ciguenialActual == undefined){
        //se recorrieron todos los cigueniales
        finalizarSimulacion();		
        Ext.extra.msg('Lote Exitoso', '');
        return;
    }
    
	
    var idCiguenialActual = ciguenialActual.id;    
    if(indexCampo == -1){
        //creo el registro
        var record = {id: idCiguenialActual};
        resultadosStore.add(record);        
    }else {
        //actualizo el registro
        var campoActual = campos[indexCampo];
        var medida = ciguenialActual[campoActual];
        var tipoMedida = campoActual.substring(0,1).toUpperCase() + campoActual.substring(1,campoActual.length - 1);
        resultadosStore.getById(idCiguenialActual).set(campoActual,medida); 


        if(campoActual != 'estado' && !validador["is"+tipoMedida+"Valido"](medida)){
            resultadosStore.getById(idCiguenialActual).set('estado','FALLO');             
             //corto la prueba
            indexCampo = -1;
            indexCiguenial++;   
            cantFallos++; 
            verificarAceptacion(); 
            actualizarPorcentajeExito();        
			actualizarProgreso();
            return;
        } else if (campoActual != 'estado' && !validadorNorma["is"+tipoMedida+"Valido"](medida)) {
        	cantFallosNorma++;
        }
      
    }
	
    indexCampo++;   

    if(indexCampo == campos.length){
        indexCampo = -1;
        indexCiguenial++;
        if (validadorNorma.isPorcentajeNormaValido(cantFallosNorma,cantPruebas)) {
        	resultadosStore.getById(idCiguenialActual).set('estado','OK');
        } else {
        	resultadosStore.getById(idCiguenialActual).set('estado','REG');
        }
        cantFallosNorma = 0;
        actualizarPorcentajeExito();    
    } 
	actualizarProgreso();
}

var vieneDePausa = false;

var botonComenzar = Ext.create('Ext.Button', {
    text: 'Comenzar',
    renderTo: Ext.getBody(),
    disabled: true,
    handler: function() {
        actualizarPorcetajeAceptacion();
		if(!vieneDePausa){
			resultadosStore.removeAll();
			resetValores();
		}
        //habilito y deshabilito los botones segun corresponda
        this.setDisabled(true);
        botonPausar.setDisabled(false);
        botonDetener.setDisabled(false);
        //obtengo los cigueñales del lote seleccionado
        lotePrueba = lotesPrueba[comboLote.value - 1];
        ciguenialesPrueba = lotePrueba.cigueniales;
        validador = validator();
        validadorNorma = validatorNorma();
		vieneDePausa = false;
		iniciarSimulacion();

    }
});

var botonPausar = Ext.create('Ext.Button', {
    text: 'Pausar',
    disabled: true,
    handler: function() {
		finalizarSimulacion();
        botonDetener.setDisabled(false);
		vieneDePausa = true;
    }
});

var botonDetener = Ext.create('Ext.Button', {
    text: 'Detener',
    disabled: true,
    handler: function() {
		finalizarSimulacion();
        resultadosStore.removeAll();
        resetValores();
        actualizarProgreso(-1);
		vieneDePausa = false;
    }
});
